namespace Legend.IO
{
    using System.Collections.Generic;

    /// <summary>
    /// Represents a directory in the file system.
    /// </summary>
    public interface IDirectory
        : IFileSystemEntry
    {
        /// <summary>
        /// Gets all the entries in  the directory.
        /// </summary>
        IEnumerable<IFileSystemEntry> Entries { get; }

        /// <summary>
        /// Gets all the files in the directory.
        /// </summary>
        IEnumerable<IFile> Files { get; }

        /// <summary>
        /// Gets all the directories in the directory.
        /// </summary>
        IEnumerable<IDirectory> Directories { get; }

        /// <summary>
        /// Deletes the directory and all content within
        /// the directory or any sub directories.
        /// </summary>
        void DeleteRecursively();
    }
}
